#!/usr/bin/env python3

import urllib.request
import json


def get_token(corpid, corpsecret):
    token_url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=%s&corpsecret=%s' % (corpid, corpsecret)
    token = json.loads(urllib.request.urlopen(token_url).read().decode())['access_token']
    return token


def build_message(message):
    values = {
        "touser": '@all',  # 消息接收者，多个接收者用‘|’分隔，最多支持1000个接收者，设置为@all向应用的全部成员发送。
        "msgtype": 'text',  # 消息类型，文本消息固定为：text。（发送图片等消息时需要修改位对于的消息类型）
        "agentid": 1000002,  # 企业应用的id，整型。可在应用的设置页面查看。
        "text": {'content': message},  # 消息内容，可以支持换行、以及A标签(注意：换行符请用转义过的\n)。
        "safe": 0,  # 表示是否是保密消息，0表示否，1表示是，默认0。
    }
    msges = (bytes(json.dumps(values), 'utf-8'))
    return msges


def send_message(token, data):
    send_url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s' % (token)
    respone = urllib.request.urlopen(urllib.request.Request(url=send_url, data=data)).read()
    x = json.loads(respone.decode())['errcode']
    if x != 0:
        print('发送失败，请检查！')


corpid = 'wwa2f4**********c0'  # 企业微信的corpid
corpsecret = 'LX0dal5J6Cthv2****************CF64WespNAEbA'  # 应用的corpsecret
message = '消息推送测试'  # 推送的消息内容

wechat_token = get_token(corpid, corpsecret)  # 获取token
message_data = build_message(message)  # 生成消息
send_message(wechat_token, message_data)  # 发送消息
